package com.xdb.engine;

import java.util.List;

import com.xdb.sqlparser.ast.SQLStatement;

/**
 * XDB数据引擎
 * 
 * @author woate
 *
 */
public interface XDBEngine {
	/**
	 * 创建表
	 * 
	 * @param sql
	 */
	void createTable(String sql);
	/**
	 * 创建视图
	 * 
	 * @param sql
	 */
	void createView(String sql);
	/**
	 * 创建索引
	 * 
	 * @param sql
	 */
	void createIndex(String sql);
	/**
	 * 创建序列
	 * 
	 * @param sql
	 */
	void createSequence(String sql);
	/**
	 * 创建触发器
	 * 
	 * @param sql
	 */
	void createTrigger(String sql);
	/**
	 * 创建存储过程
	 * 
	 * @param sql
	 */
	void createProcedure(String sql);
	/**
	 * 创建函数
	 * 
	 * @param sql
	 */
	void createFunction(String sql);
	/**
	 * 调用存储过程
	 * 
	 * @param name
	 * @param ins
	 * @param outs
	 */
	void callProcedure(String name, String[] ins, String[] outs);
	/**
	 * 调用函数
	 * 
	 * @param name
	 * @param ins
	 * @return
	 */
	String[] callFunction(String name, String[] ins);
	/**
	 * 调用函数，这个函数是聚合函数
	 * 
	 * @param name
	 * @param in
	 * @param list
	 * @return
	 */
	String[] callFunction(String name, List<String> list);
	/**
	 * 解析SQL字符语句，将其转换为抽象语法树对象
	 * 
	 * @param sql
	 *            SQL字符语句
	 * @return 抽象语法树对象
	 */
	List<SQLStatement> parse(String sql);

}
